package ar.edu.utn.frba.proyecto.grupo101;

import java.util.HashMap;
import java.util.Map;

import ar.edu.utn.frba.proyecto.interfaces.Funcionable;

public class FuncionAptitud implements Funcionable {

	private Map<String, Double> tomar;
	private Map<String, Double> ganancia;
	private Map<String, Double> impuesto;
	private Map<String, Double> liquidez;
	private Map<Byte, Double> registrable;
	
	public FuncionAptitud(){
		tomar= new HashMap<String, Double>();
		tomar.put("000", 35d);
		tomar.put("001", 40d);
		tomar.put("010", 45d);
		tomar.put("011", 85d);
		tomar.put("100", 100d);
		tomar.put("101", 0d);
		tomar.put("110", 0d);
		tomar.put("111", 0d);
		ganancia= new HashMap<String, Double>();
		ganancia.put("0000", 1d);
		ganancia.put("0001", 2d);
		ganancia.put("0010", 3d);
		ganancia.put("0011", 4d);
		ganancia.put("0100", 4.5d);
		ganancia.put("0101", 6d);
		ganancia.put("0110", 7d);
		ganancia.put("0111", 9d);
		ganancia.put("1000", 22d);
		ganancia.put("1001", 0d);
		ganancia.put("1010", 0d);
		ganancia.put("1011", 0d);
		ganancia.put("1100", 0d);
		ganancia.put("1101", 0d);
		ganancia.put("1110", 0d);
		ganancia.put("1111", 0d);
		impuesto=new HashMap<String, Double>();
		impuesto.put("000", 0.2d);
		impuesto.put("001", 0.8d);
		impuesto.put("010", 1d);
		impuesto.put("011", 1.5d);
		impuesto.put("100", 2d);
		impuesto.put("101", 3d);
		impuesto.put("110", 100d);
		impuesto.put("111", 100d);
		liquidez=new HashMap<String, Double>();
		liquidez.put("000", 10d);
		liquidez.put("001", 60d);
		liquidez.put("010", 70d);
		liquidez.put("011", 80d);
		liquidez.put("100", 0d);
		liquidez.put("101", 0d);
		liquidez.put("110", 0d);
		liquidez.put("111", 0d);
		registrable=new HashMap<Byte, Double>();
		registrable.put((byte)0, 0d);
		registrable.put((byte)1, 1d);
	}
	
	public double funcion(Byte[] info) {
		String tomarAux= info[0] + "" +info[1] + "" +info[2];
		String gananciaAux= info[3]+ "" + info[4]+ "" + info[5]+ "" + info[6];
		String impuestoAux= info[7]+ "" + info[8]+ "" + info[9];
		String liquidezAux= info[10]+ "" + info[11]+ "" + info[12];
		Byte registrableAux=info[13];
		double result=((tomar.get(tomarAux)/100) * (ganancia.get(gananciaAux) - impuesto.get(impuestoAux) + liquidez.get(liquidezAux))) - (10* registrable.get(registrableAux));
		if (result<0){
			return 0;
		} else {
			return result;
		}
	}

}
